Many digital signal processing (DSP) applications require the generation of discrete-time, sinusoidal sequences to perform functions such as up/down conversion, signal synthesis, and tone detection/tracking. Conventional methods for the generation of discrete-time sinusoidal sequences generally fall into two categories: 1) phase accumulation oscillators that use a lookup table to transform a phase-step input (θ) into a corresponding sinusoidal sample (xn=sin(φ+θ)); and 2) recursive oscillators that produce a current sinusoidal sample (xn=sin(φ+θ)) representing a phase-step of θ, using a combination of prior output samples (i.e., xn−1=sin(φ), xn−2=sin(φ−θ), . . . ). The sinusoidal samples xn, conventionally are generated at the full Nyquist rate, such that the sampling rate fS, and the frequency f=θ/2π·fS, of the sinusoidal sequence are related by f≦½·fS (i.e., f the underlying continuous-time sine wave is less than one-half the sampling rate associated with the discrete-time sequence). At lower sampling rates (i.e., at sampling rates where f≦½·fS), aliasing causes a high-frequency sequence produced by conventional methods to be indistinguishable from a lower-frequency image resulting from folding about the Nyquist frequency of ½·fS. The present inventor has come to appreciate that sampling rate constraints limit the utility of conventional approaches in applications that require very high-speed operation.
FIG. 1 is a block diagram which illustrates a conventional phase accumulation oscillator (i.e., oscillator 10). In combination, adder 13 and register 11 produce phase output 2 that, with each cycle of the sampling clock fS=fCLK, steps by an amount determined by phase input 1 (i.e., the output steps in phase by an amount equal to θ on each sampling period TS=1/fS). The phase at output 3 is converted into a sinusoidal sample, with amplitude xn=sin(φn+θ), using sine lookup table 19, which maps phase to amplitude. Adder 13 and register 11 implement the first-order difference equation φn=θ+φn−1,
and the corresponding transfer function from phase input 1 to phase output 2 is given by
            H      ⁡              (        z        )              =                  z                  -          1                            1        -                  z                      -            1                                ,where the z-transform variable z represents a unit delay equal to one full-rate sampling period TS. The samples at output 3 are those of a sinusoidal sequence with frequency f=θ/2π·fS, provided that f≦½·fS (i.e., θ≦π). Otherwise, aliasing (i.e., frequency folding) results in an output frequency f=(n−θ/2π)·fS, where n is the smallest integer such that 0≦f≦½·fS. It should be noted that the initial value of register 11 does not affect the output frequency f, and therefore, register 11 is not preset to any particular value in a conventional implementation.
An alternative apparatus for generating sinusoidal sequences is conventional discrete-time oscillator 20, which is illustrated in FIG. 2. Oscillator 20 is conventionally referred to as a direct-form recursive oscillator, which in one respect, can be distinguished from conventional oscillator 10 by the absence of a sine lookup table. The operation of oscillator 20 is based on the recursion relationcos(φn±θ)=2·cos(θ)·cos(φn)−cos(φn−φ)xn=2·cos(θ)·xn−1−xn−2,which is easily derived from angle sum and difference formulas for trigonometric functions, and has been known since at least the time of French mathematician Francois Viète in the 1500 s. Oscillator 20 uses multiplier 12, adder 13 and registers 11A&B to implement the above recursion relation, which has the corresponding discrete-time transfer function given by
            H      ⁡              (        z        )              =          1              1        -                  2          ·                      cos            ⁡                          (              θ              )                                ·                      z                          -              1                                      +                  z                      -            2                                ,where the z-transform variable z represents a unit delay equal to one full-rate sampling period TS. The recursion relation produces samples at output 3B, which like the phase accumulation oscillator of FIG. 1, are those of a sinusoidal sequence with frequency f=θ/2π·fS when f≦½·fS (i.e., θ≦π). In addition, the output samples of the recursive oscillator are like those of the phase accumulation oscillator, in that aliasing results in an output frequency of f=(n−θ/2π)·fS when f>½·fS (i.e., and as before, n is the smallest integer such that 0≦f≦½·fS). It should be noted that in order to ensure oscillation at start-up, at least one of registers 11A&B has an initial value which is non-zero. But otherwise, the initial values of registers 11A&B do not affect the output frequency f, and therefore, the values of registers 11A&B are not preset to any specific value in a conventional implementation.
Conventionally, the discrete-time oscillators illustrated in FIGS. 1&2 are also grouped into multi-oscillator systems of the type shown in FIGS. 3A-C. Conventional oscillator 30, illustrated in FIG. 3A, is sometimes referred to as a coupled-quadrature oscillator. Output 4 and output 5 of oscillator 30 are in quadrature with respect to each other, meaning that each of these outputs has the same frequency, but the phase of one output is shifted by 90 degrees relative to the phase of the other. The operation of quadrature oscillator 30 is based on the trigonometric identities:cos(φn+θ)=cos(θ)·cos(φn)−sin(θ)·sin(φn)xn=cos(θ)·xn−1−sin(θ)·yn−1 andsin(φn+θ)=sin(θ)·cos(φn)−cos(θ)·sin(φn)yn=sin(θ)·xn−1−cos(θ)·yn−1,where the outputs xn and yn are coupled in the sense that each output depends not only on its past value, but also on the past value of the other output. Conventional oscillator 35, illustrated in FIG. 3B, produces a multi-tone signal (i.e., output 6) by summing two sequences yn and ŷn which have different frequencies (e.g., sinusoidal sequence yn has angular frequency ω1=2·π·f1 and sinusoidal sequence ŷn has angular frequency ω2=2·π·f2). FIG. 3C illustrates a conventional oscillator (i.e., oscillator 40) which produces a frequency modulated output. Referring to FIG. 3C, the recursive oscillator composed of multiplier 12B, adder 13B, and registers 11C&D produces sinusoidal sequence yn (i.e., output 8), which modulates the frequency of sinusoidal sequence xn (i.e., output 7) via multiplier 12A. In should be noted that for conventional oscillators 30, 35, and 40, the initial values of registers 11A-D are of no particular importance, except that for oscillation to occur, every register cannot have a zero value at start-up.
Conventional methods for generating sinusoidal sequences employ circuits (e.g., adders, multipliers, or registers) that operate at a rate (i.e., the full sampling rate fS) which is at least twice as high as the frequency of the sinusoidal sequence they produce (i.e., the frequency f of the underlying continuous-time sine wave). At lower sampling rates, aliasing causes a high-frequency sequence to be indistinguishable from a lower frequency image produced by folding about the Nyquist frequency of ½·fS. And this problem is not resolved by conventional systems that employ multiple oscillators to produce a quadrature sequence (e.g., conventional oscillator 30), a multi-tone sequence (e.g., conventional oscillator 35), and/or a frequency-modulated sequence (e.g., conventional oscillator 40).